/**
 * 具体命令B - 命令模式中的另一个具体命令
 * 
 * 实现了Command接口，将一个接收者对象与另一个操作绑定
 * 调用接收者相应的操作来实现execute方法
 */
package com.mkx.behaviorals.command;

public class ConcreteCommandB implements Command {
    // 持有一个接收者对象的引用
    private Receiver receiver;
    
    /**
     * 构造函数，注入接收者
     * 
     * @param receiver 命令的接收者
     */
    public ConcreteCommandB(Receiver receiver) {
        this.receiver = receiver;
    }
    
    @Override
    public void execute() {
        System.out.println("执行命令B");
        // 调用接收者的相应方法
        if (receiver != null) {
            receiver.actionB();
        }
    }
    
    @Override
    public void undo() {
        System.out.println("撤销命令B");
        // 调用接收者的撤销方法
        if (receiver != null) {
            receiver.undoActionB();
        }
    }
}